package Vista;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import Dominio.ApuestaData;
import Dominio.Deporte;
import Dominio.Dom_Fachada;

import com.opensymphony.xwork2.ActionSupport;

public class CrearApuesta extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String id;
	private String tipo;
	private String local;
	private String visitante;
	private String ratio1;
	private String ratiox;
	private String ratio2;
	private String fechaCreacion;
	private String fechaFin;

	private ApuestaData apuesta;

	public String execute() {
		Deporte dep = null;
		tipo = tipo.toLowerCase();
		switch (tipo.charAt(0)) {
		case 'f':
			if (tipo.charAt(1) == 'u') {
				dep = Deporte.FUTBOL;
			} else {
				dep = Deporte.F1;
			}
			break;
		case 'b':
			dep = Deporte.BALONCESTO;
			break;
		case 't':
			dep = Deporte.TENIS;
			break;
		case 'v':
			dep = Deporte.VOLLEYBALL;
			break;
		}
		try {
			apuesta = new ApuestaData(Integer.parseInt(id), dep, local,
					visitante, Float.parseFloat(ratio1),
					Float.parseFloat(ratiox), Float.parseFloat(ratio2),
					new SimpleDateFormat("yyyy-MM-dd").parse(fechaCreacion),
					new SimpleDateFormat("yyyy-MM-dd").parse(fechaFin));
			new Dom_Fachada().createApuesta(apuesta);
			return SUCCESS;
		} catch (Exception e) {
			System.err.println(e.toString());
		}
		return ERROR;
	}

	public void validate() {
		if (id.length() > 0) {
			try {
				Integer.parseInt(id);
			} catch (Exception e) {
				System.err.println(e.toString());
				addFieldError("id", "ID inválido, debe ser numérico.");
			}
		} else {
			addFieldError("id", "Inserte un número.");
		}
		if (!(tipo.equalsIgnoreCase("futbol")
				|| tipo.equalsIgnoreCase("baloncesto")
				|| tipo.equalsIgnoreCase("tenis")
				|| tipo.equalsIgnoreCase("f1") || tipo
					.equalsIgnoreCase("volleyball"))) {
			addFieldError("tipo", "Deporte inválido");
		}
		if (local.length() == 0) {
			addFieldError("local", "El campo es obligatorio.");
		}
		if (visitante.length() == 0) {
			addFieldError("visitante", "El campo es obligatorio.");
		}
		if (ratio1.length() == 0) {
			addFieldError("uno", "El campo es obligatorio.");
		} else {
			try {
				Float.parseFloat(ratio1);
			} catch (Exception e) {
				addFieldError("uno", "Formato de ratio inválido.");
			}
		}
		if (ratiox.length() == 0) {
			addFieldError("x", "El campo es obligatorio.");
		} else {
			try {
				Float.parseFloat(ratiox);
			} catch (Exception e) {
				addFieldError("x", "Formato de ratio inválido.");
			}
		}
		if (ratio2.length() == 0) {
			addFieldError("dos", "El campo es obligatorio.");
		} else {
			try {
				Float.parseFloat(ratio2);
			} catch (Exception e) {
				addFieldError("dos", "Formato de ratio inválido.");
			}
		}
		if (fechaCreacion.length() == 0) {
			addFieldError("inicio", "Campo obligatorio.");
		} else {
			@SuppressWarnings("unused")
			Date date = null;
			try {
				date = new SimpleDateFormat("yyyy-MM-dd").parse(fechaCreacion);
			} catch (ParseException e) {
				addFieldError("inicio", "El formato de fecha es incorrecto.");
			}
		}
		if (fechaFin.length() == 0) {
			addFieldError("fin", "Campo obligatorio.");
		} else {
			@SuppressWarnings("unused")
			Date date = null;
			try {
				date = new SimpleDateFormat("yyyy-MM-dd").parse(fechaFin);
			} catch (ParseException e) {
				addFieldError("fin", "El formato de fecha es incorrecto.");
			}
		}
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getLocal() {
		return local;
	}

	public void setLocal(String local) {
		this.local = local;
	}

	public String getVisitante() {
		return visitante;
	}

	public void setVisitante(String visitante) {
		this.visitante = visitante;
	}

	public String getRatio1() {
		return ratio1;
	}

	public void setRatio1(String ratio1) {
		this.ratio1 = ratio1;
	}

	public String getRatiox() {
		return ratiox;
	}

	public void setRatiox(String ratiox) {
		this.ratiox = ratiox;
	}

	public String getRatio2() {
		return ratio2;
	}

	public void setRatio2(String ratio2) {
		this.ratio2 = ratio2;
	}

	public String getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(String fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

}
